Skip to content

RFD: Streamable HTTP & WebSocket Transport#155

Open
federicociner wants to merge 20 commits into
agentclientprotocol:mainfrom
federicociner:feat/acp-web-transport
Open

RFD: Streamable HTTP & WebSocket Transport#155
federicociner wants to merge 20 commits into
agentclientprotocol:mainfrom
federicociner:feat/acp-web-transport

Conversation

@federicociner

@federicociner federicociner commented May 19, 2026

Copy link
Copy Markdown

Draft implementation of the Streamable HTTP & WebSocket Transport RFD.

Reference implementation aligns with the RFD and most of the proposed changes in the Rust SDK.

@federicociner federicociner changed the title Feat/acp web transport RFD: Streamable HTTP & WebSocket Transport May 19, 2026
@federicociner federicociner force-pushed the feat/acp-web-transport branch from c5c29e5 to 5203ef1 Compare May 19, 2026 09:21
@federicociner federicociner force-pushed the feat/acp-web-transport branch 2 times, most recently from 98ada88 to c8a84c5 Compare June 9, 2026 17:44
@federicociner federicociner marked this pull request as ready for review June 11, 2026 17:01
@federicociner federicociner force-pushed the feat/acp-web-transport branch from c8a84c5 to d7ee559 Compare June 11, 2026 17:03
@benbrandt

Copy link
Copy Markdown
Member

@federicociner I'll need to dig in for sure, it's a big one! But I wonder if there is a way we can make it clearer this is experimental/unstable while we figure out how this will all work?

Open to multiple solutions (either in the filenames/exports, a separate package, something else)

@federicociner federicociner force-pushed the feat/acp-web-transport branch from d7ee559 to 6ff8230 Compare June 13, 2026 20:19
@federicociner

Copy link
Copy Markdown
Author

@federicociner I'll need to dig in for sure, it's a big one! But I wonder if there is a way we can make it clearer this is experimental/unstable while we figure out how this will all work?

Open to multiple solutions (either in the filenames/exports, a separate package, something else)

@benbrandt yes agreed. I think the main reasonable options are:

  1. Experimental sub-path exports e.g.
@agentclientprotocol/sdk/experimental/http-client
@agentclientprotocol/sdk/experimental/ws-client
@agentclientprotocol/sdk/experimental/server
@agentclientprotocol/sdk/experimental/node

and we can just update the exports to

{
  "exports": {
    ".": {
      "types": "./dist/acp.d.ts",
      "import": "./dist/acp.js",
      "default": "./dist/acp.js"
    },
    "./experimental/http-client": {
      "types": "./dist/http-stream.d.ts",
      "import": "./dist/http-stream.js",
      "default": "./dist/http-stream.js"
    },
    ...
  }
}
  1. Unstable prefixes for all symbols e.g.
unstable_createHttpStream
unstable_createWebSocketStream
UnstableAcpServer
unstable_createNodeHttpHandler
unstable_createNodeWebSocketUpgradeHandler
...

My personal preference is Option 1, since there's less churn and breaking renames later on when we stabilise the spec.

WDYT?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants